---
title: "Módulo Gráficos"
subtitle: Práctica guiada
output:
  html_document:
    toc: yes
    toc_float: yes
editor_options:
  chunk_output_type: console
---

<br> 
<br>


***

<br>
<br>

## Gráfico de barras con variables numéricas

### Supongamos que queremos comparar la media del ingreso por la ocupación principal de las y los asalariados según la condición de registro.

<br>


__1. Cargo las librerías con las que voy a trabajar:__
```{r echo=TRUE, message=FALSE, warning=FALSE, paged.print=FALSE}
library(eph)
library(tidyverse)
library(questionr)
library(ggthemes)
```
__2. Descargamos la base de datos con la que vamos a trabajar:__
```{r echo=TRUE}
base <- get_microdata(year = 2018, trimester = 4, type = "individual")
```

<br>

__3. Estructuramos la base para obtener la información que queremos visualizar:__
```{r echo=TRUE}
medias <- base %>% 
  filter(ESTADO == 1, CAT_OCUP == 3) %>% 
  mutate(condicion_registro = factor(PP07H,
                                     levels = c(1, 2),
                                     labels = c( "Registrado", "No registrado"))) %>% 
  group_by(condicion_registro) %>% 
  summarise(media = wtd.mean(P21, weights = PONDERA))
```

<br>

__4. Graficamos__
```{r echo=TRUE}
medias %>% 
  ggplot(aes(x = condicion_registro,
             y = media,
             fill = condicion_registro)) +
  geom_col() +
  geom_text(aes(label = round(media, 1)),
            vjust = 1) +
  labs(title = "Media del ingreso de la ocupación principal de la \n población asalariada por condición de registro. Total aglomerados",
       x = "Condición de registro",
       y = "Media del ingreso de la Ocup. Principal",
       caption = "Fuente: Elaboración propia en base a la EPH-INDEC") +
  theme_clean()
  #ggsave(filename = "barras_media.png", width = 6, height = 5)
```

<br>

- _Con `labs` agregamos las etiquetas al gráfico (título, subtítulo, nombre de los ejes, notas al pie, etc.)._

    - _Con ` \n ` podemos "partir" el título tantas veces como querramos._
  
_Con `geom_text()` agregamos las etiquetas de los valores que toma la variable en el gráfico_


<br>
<br>


***

<br>

## Gráfico de barras para variables categóricas

<br>

- Intentemos graficar cómo se distribuye la población en función del nivel educativo de las personas y el sexo:

  
- Al ser ambas variables cualitativas, tendremos que estructura la base en fución:

```{r}
base_graf <- base %>% 
  mutate(nivel_educativo = factor(NIVEL_ED,
                                  levels = c(7, 1:6),
                                  labels = c("Sin instrucción", "Primaria incompleta",
                                             "Primaria completa", "Secundaria incompleta",
                                             "Secundaria completa", "Superior incompleta",
                                             "Superior completa")),
         sexo             = factor(CH04,
                                   levels = c(1, 2),
                                   labels = c("Varón", "Mujer"))) %>% 
  select(nivel_educativo, sexo, PONDERA)
```

<br>
<br>

***

## Parámetro de posición (`position = ""`)

<br>

 __position = "stack"__

* Posiciona de forma apilada cada una de las categorías, acumulando cantidades.
```{r echo=TRUE}
ggplot(data = base_graf) +
  geom_bar(aes(x = nivel_educativo,
               fill = sexo),
           position = "stack")
```

<br>
<br>

### - __position = "fill"__

* Posiciona de forma apilada cada una de las categorías, con límites de 0 a 1 (para comparación de proporciones)
```{r echo=TRUE}
ggplot(data = base_graf) +
  geom_bar(aes(x = nivel_educativo,
               fill = sexo),
           position = "fill")
```

<br>
<br>

### - __position = "dodge"__

* Posiona de forma vertical las barras en función de las categorías
```{r echo=TRUE}
ggplot(data = base_graf) +
  geom_bar(aes(x = nivel_educativo,
               fill = sexo),
           position = "dodge")
```

<br>
<br>

***

### _¿Y si invertimos el análisis?_

<br>

### __position = "stack"__

* Posiciona de forma apilada cada una de las categorías, acumulando cantidades.
```{r echo=TRUE}
ggplot(data = base_graf) +
  geom_bar(aes(x = sexo,
               fill = nivel_educativo),
           position = "stack")
```

<br>
<br>

### __position = "fill"__

* Posiciona de forma apilada cada una de las categorías, con límites de 0 a 1 (para comparación de proporciones)
```{r echo=TRUE}
ggplot(data = base_graf) +
  geom_bar(aes(x = sexo,
               fill = nivel_educativo),
           position = "fill")
```

<br>
<br>

### __position = "dodge"__

* Posiona de forma vertical las barras en función de las categorías
```{r echo=TRUE}
ggplot(data = base_graf) +
  geom_bar(aes(x = sexo,
               fill = nivel_educativo),
           position = "dodge")
```

<br> 
<br>

***

### _En el mismo gráfico podemos ir editando algo del estilo:

<br>

Con `scale_fill_viridis_d` cambiamos la paleta de colores a la escala _"viridis"_, diseñada por expertos en visualización de la información, pensada para lucir bien y poder ser leída incluso por gente con daltonismo.
```{r echo=TRUE}
base_graf2 <- base_graf %>%
  calculate_tabulates("sexo", "nivel_educativo", weights = "PONDERA") %>% 
  gather(key = nivel_educativo, value = poblacion, 2:8) %>% 
  rename(sexo = `sexo/nivel_educativo`) %>% 
  group_by(sexo) %>% 
  mutate(pob_porcentaje = poblacion / sum(poblacion)*100)


sum(base_graf2$pob_porcentaje[base_graf2$sexo=="Varón"])

ggplot(data = base_graf2) +
  geom_bar(aes(x = sexo,
               y = pob_porcentaje,
               fill = nivel_educativo),
           position = "dodge",
           stat     = "identity") +
  geom_text(aes(x = sexo, 
                y = pob_porcentaje,
                group = nivel_educativo,
                label = paste0(round(pob_porcentaje,1), "%")),
            position=position_dodge(width=0.9),
            vjust = -0.5,
            size = 3) +
  scale_fill_viridis_d() +
  labs(title = "Distribución porcentual de la población por sexo según el \n máximo nivel educativo. Total Aglomerados. Trimestre 4, año 2018",
       x = "Sexo",
       y = "Máximo nivel educativo alcanzado",
       caption = "Fuente: Elaboración propia en base a la EPH-INDEC")
```

<br>
<br>

* Posiciona de forma apilada cada una de las categorías, con límites de 0 a 1 (para comparación de proporciones). Agregamos etiquetas y estilo.
```{r echo=TRUE}
ggplot(data = base_graf2) +
  geom_bar(aes(x = sexo,
               y = pob_porcentaje,
               fill = nivel_educativo),
           position = "fill",
           stat = "identity") +
  geom_text(aes(x = sexo,
               y = pob_porcentaje,
               group = nivel_educativo,
               label = paste0(round(pob_porcentaje,1), "%")),
           position = "fill",
           vjust = 2.5,
           size = 5) +
  scale_fill_viridis_d() +
  labs(title = "Distribución porcentual de la población por sexo según el \n máximo nivel educativo. Total Aglomerados. Trimestre 4, año 2018",
       x = "Sexo",
       y = "Máximo nivel educativo alcanzado",
       caption = "Fuente: Elaboración propia en base a la EPH-INDEC")
```


<br>
<br>

### Hacer un gráfico de lineas, evolución en el tiempo.

Bajo varias bases para construir una serie de tiempo:
```{r}
library(eph)
library(tidyverse)
base2018t1 <- get_microdata(year = 2018, trimester = 1, type = "individual")
base2018t2 <- get_microdata(year = 2018, trimester = 2, type = "individual")
base2018t3 <- get_microdata(year = 2018, trimester = 3, type = "individual")
base2018t4 <- get_microdata(year = 2018, trimester = 4, type = "individual")
```

Fusiono bases:
```{r}

base_tot <- rbind(base2018t1, base2018t2, base2018t3, base2018t4) %>% 
  mutate(periodo = paste0(ANO4, "t", TRIMESTRE))

# Chequeo fusión y armado de variable `periodo`
table(base_tot$periodo)
```

<br>

Armo tabla con datos para tasa de no registro de la población asalariada en el tiempo
```{r}
tabulado <- base_tot %>% 
  filter(ESTADO == 1, CAT_OCUP == 3) %>% 
  group_by(periodo, CH04) %>% 
  summarise(poblacion_no_registrada = sum(PONDERA[PP07H==2]),
            tasa                    = poblacion_no_registrada / sum(PONDERA) * 100) %>% 
  select(-poblacion_no_registrada)
tabulado
```

<br> 

Graficamos:
```{r}
ggplot(tabulado) +
  aes(x = periodo,
      y = tasa,
      group = factor(CH04),
      fill = factor(CH04),
      label = round(tasa,1)) +
  geom_point() +
  geom_line(aes(color = factor(CH04))) +
  scale_y_continuous(limits = c(30, 40)) +
  geom_text(vjust = -1) +
  labs(title = "Tasa de no registro para asalariados/as por sexo. Total aglomerados. \n Trimestres 1, 2, 3 y 4 del año 2018",
       x = "Año y trimestre",
       y = "Tasa de no registro",
       caption = "Fuente: Elaboración propia en base a la EPH-INDEC")
```


